package com.hollowlatte.manage.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hollowlatte.manage.entity.Perms;
import com.hollowlatte.manage.entity.Role;
import com.hollowlatte.manage.entity.vo.RoleVO;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author Hollow Latte
 * @since 2021-04-27
 */
public interface RoleService extends IService<Role> {
    /**
     * 添加角色的权限
     *
     * @param roleId  角色id
     * @param permsId 权限id
     * @return 是否有影响行数
     */
    boolean assignPermsForRole(Long roleId, Long permsId);


    /**
     * 通过角色id查询权限
     *
     * @param id 角色id
     * @return 权限实体类列表
     */
    List<Perms> listPermsById(Long id);


    /**
     * 删除角色，并删除角色所有的权限
     *
     * @param roleId 角色id
     * @return 是否有影响行数
     */
    boolean removeRole(Long roleId);


    /**
     * 删除角色的某个权限
     *
     * @param roleId  角色id
     * @param permsId 权限id
     * @return 是否有影响行数
     */
    boolean removePermsOfRole(Long roleId, Long permsId);


    /**
     * 修改角色的权限
     *
     * @param roleId         角色id
     * @param newPermsIdList 新权限id列表
     * @return 是否有影响行数
     */
    boolean updatePermsForRole(Long roleId, List<Long> newPermsIdList);


    /**
     * 将Role列表转换为RoleVO列表
     *
     * @param roleList 角色列表
     * @return RoleVO列表
     */
    List<RoleVO> convertRoleToRoleVO(List<Role> roleList);
}
